# #可存储类型
# #列表
#
#
#
#
# #增
# #列表增
# list=[1,'张三', 1.2, True,[2,3],{"name":"张三"},(9,8)]
# # list.append([2]) #在列表最后添加一个元素，效率高
#  #输出：[1, '张三', 1.2, True, [2, 3], {'name': '张三'}, (9, 8), [2]]
# # list.insert(1,"草莓")#索引指定插入位置，适合在中间插入元素；数字就是元素的角标
# #输出：[1, '草莓', '张三', 1.2, True, [2, 3], {'name': '张三'}, (9, 8), [2]]
# # list2=[11,[222,333],(444),(555,),{"age":20}]
#
# list02={"name":"张三","age":23}
# list.extend(list02)
# # list.insert(0,1)
# # list.append(1)
# print(list)
# print(type(55))
# print(type((55,)))
# print(type(list))
# # list3=list+list2
# # print(list3)
# # print(type(list3))

# lst = ["苹果", "香蕉", "西瓜"]
#
# # 在索引2的位置插入 ["橙子", "草莓"]（原索引2及之后的元素后移）
# lst[2:2] = ["橙子", "草莓"]  # 切片 [2:2] 表示"插入点"
# print(lst)  # 输出：['苹果', '香蕉', '橙子', '草莓', '西瓜']
#
# # 替换原有元素（同时实现删除和添加）
# lst[1:3] = ["葡萄", "芒果"]  # 替换索引1-2的元素（原"香蕉"、"橙子"被移除）
# print(lst)  # 输出：['苹果', '葡萄', '芒果', '草莓', '西瓜']


# lst = ["苹果", "香蕉", "橙子", "西瓜",]
# del lst[1:2]
# print(lst)
# 删除最后一个元素
# last_item = lst.pop()
# print(last_item)  # 输出：橙子（被删除的元素）
# print(lst)        # 输出：['苹果', '香蕉']

# 删除指定索引的元素（索引1）
# item = lst.pop(1)
# print(item)       # 输出：香蕉
# print(lst)        # 输出：['苹果']




# 修改第一个元素（索引0）
# lst[-3] = "草莓"
# print(lst)  # 输出：['草莓', '香蕉', '橙子']

# # 修改最后一个元素（索引-1）
# lst[-1] = "西瓜"
# print(lst)  # 输出：['草莓', '香蕉', '西瓜']
# a="苹果" in lst
# print(a)  #True
# lst = ["苹果", "香蕉", "橙子","苹", "香蕉", "橙子","苹果", "香蕉", "橙"]
# #
# index=lst.index("苹",-6,-1)#[-6,-1)
# print(index)

# s=1,2,3,4,5
# 合法的集合元素

# s="hello"
# print(s)
# print(type(s))

# d = {"name": "Alice", "age": 30}
# print(d)
# d.update({"gender": "female", "age": 31})  # 已有键会被覆盖
# print(d)  # 输出：{'name': 'Alice', 'age': 31, 'city': 'Beijing', 'gender': 'female'}
#
# # 也可以用关键字参数
# d.update(height=170, weight=60)
# print(d)  # 输出：{'name': 'Alice', 'age': 31, ..., 'height': 170, 'weight': 60}


# d = {"name": "Alice", "age": 30, "city": "Beijing"}
# del d["age"]        # 删除指定键
# age = d.pop("age")  # 删除并返回值
# print(age)          # 输出：30
# default = d.pop("cit", "N")  # 键不存在时返回默认值
# print(default)      # 输出：N


# lst=[1,2,3,4,5,6,7,8,9]
# print(lst[2]) #输出:3,索引值依次为0,1,2....
# print(lst[-2]) #输出:8, 索引值从右往左数依次为-1,-2...
# num_list=[11,22,33,44,55,66,88,99]
#         # 0   1  2  3  4  5  6  7
#         # -8 -7 -6 -5 -4 -3 -2 -1
# print(num_list[:]) #输出:[11,22,33,44,55,66,88,99]
# print(num_list[2:5]) #输出:33,44,55
# print(num_list[-1:-5:-2])#输出:99,66
# print(num_list[2:7:2])#输出:33,55,88
# print(num_list[::-1])#输出:99,88,66,55,44,33,22,11
# print(num_list[-2::-2])#输出:88,55,33,11
# print(num_list[:6:])#输出:11,22,33,44,55,66
#
#
# print(num_list[:6:-1])#输出:66,55,44,33,22,11
# print(num_list[2::-1])#输出:99,88,66,55,44,33
# print(num_list[4:1:1])#输出:33,44,55
# print(num_list[100:1:1])#?

# set1={
#     "ta",
#     1,
#     2.1,
#     True,
#     # {"name":"John", "age":20}, #TypeError: unhashable type: 'dict'
#     (1,2),
#     # [False,1] #TypeError: unhashable type: 'list'
#     }
# print(set1)
# print(type(set1))

# s = {1, 2, 3}
#
# # 添加单个元素（若元素已存在，则无操作）
# s.add(4)  # s 变为：{1, 2, 3, 4}
# print(s)
# s.add(2) # 无操作，元素 2 已存在
# print(s)
#
# # 添加多个元素（参数必须是可迭代对象）
# s.update([4, 5, 6])  # s 变为：{1, 2, 3, 4, 5, 6}
# print(s)
# s.update("abc")     # s 变为：{1, 2, 3, 4, 5, 6, 'a', 'b', 'c'}
# print(s)
#
# a = {1, 2, 3, 4}
# b = {3, 4, 5, 6}
#
# # 交集：同时存在于两个集合的元素
# print(a & b)      # 输出：{3, 4}
# print(a.intersection(b))  # 等价方法
#
# # 并集：合并两个集合的所有元素（自动去重）
# print(a | b)      # 输出：{1, 2, 3, 4, 5, 6}
# print(a.union(b)) # 等价方法
#
# # 差集：存在于 a 但不存在于 b 的元素
# print(a - b)      # 输出：{1, 2}
# print(a.difference(b))  # 等价方法
#
# # 对称差集：只存在于一个集合中的元素
# print(a ^ b)      # 输出：{1, 2, 5, 6}
# print(a.symmetric_difference(b))  # 等价方法

# s = {1, 2, 3}
#
# # 判断子集/超集
# print({1, 2}.issubset(s))      # 输出：True
# print(s.issuperset({1, 2}))    # 输出：True
#
# # 判断集合是否不相交（没有共同元素）
# print(s.isdisjoint({4, 5}))    # 输出：True
#
# # 集合长度
# print(len(s))                  # 输出：3